//
//#ifndef _PROJECTZ_NUSER_NCOMMAND_NBATTLE_CS_DUNGEON_CARD_REWARD_H_
//#define _PROJECTZ_NUSER_NCOMMAND_NBATTLE_CS_DUNGEON_CARD_REWARD_H_
//
//#include "../../engine.h"
//
//#include "../../User.h"
//#include "../../Data.h"
//#include "../../NResource/Static.h"
//#include "../../NLogic/Item.h"
//
//#include "../../NLogic/Space.h"
//
//namespace ProjectZ { namespace NCommand { namespace NMatching {
//
//class CS_DUNGEON_CARD_REWARD
//{
//public:
//	static void OnExecute(User * pUser, ::Network::Packet * pPacket)
//	{
//		NLogic::Space * pSpace = pUser->GetSpace();
//		if (NULL == pSpace)
//		{
//			::Logger::GETLOG()->ToFile(::Logger::DEBUG, "WARNING: CN_DUNGEON_CARD_REWARD GID %d, pSpace is NULL", pUser->GetGID());
//			return;
//		}
//
//		PREPARE_PACKET;
//
//		int gid = 0;
//		int opencard = 0;
//
//		pPacket->ParseMsg("%d%d", &gid, &opencard);
//
//		if( opencard < 0 || opencard > 3)
//		{
//			::Logger::GETLOG()->ToFile(::Logger::DEBUG, "WARNING: CN_DUNGEON_CARD_REWARD invalid opencard number %d", opencard);
//			return;
//		}
//
//		//
//		int Reward = 0;
//		if( pSpace->GetCardReward()[opencard].gid == -1 && IsOpen(pSpace, opencard, pUser->GetGID()) == false)
//		{
//			Reward = ACK_OK;
//
//			pSpace->GetCardReward()[opencard].gid = pUser->GetGID();
//			//strncpy(pSpace->GetCardReward()[opencard].userid, pUser->nickname, strlen(pUser->nickname));
//			//strncpy(pSpace->GetCardReward()[opencard].userid, pUser->GetUserInfo().nickname.c_str(), pUser->GetUserInfo().nickname.length());
//
//			NLogic::Item::Data clsData;
//			NResource::Static::InstancePtr()->GetDungeonReward()->DungeonReward(pUser, clsData, opencard);
//			NLogic::Bag * pBag = pUser->GetBag(static_cast<INVEN_BAG_TYPE>(clsData.bag_type));
//			if (pBag == NULL)
//			{
//				SendPacket(pUser, ACK_UNKNOWN_ERROR, opencard);
//				return;
//			}
//
//			NLogic::Item * pItem = NLogic::s_clsItemPool.NEW();
//			pItem->Open_Normal(clsData, pUser);
//
//			if (false == pBag->AddItem(pItem))
//			{
//				SendPacket(pUser, ACK_REWARD_BAG_FULL, opencard);
//				return;
//			}
//
//			if (false == pItem->InsertToDatabaseItemInfo())
//			{
//				SendPacket(pUser, ACK_DB_ERROR, opencard);
//				return;
//			}
//
//			pSpace->GetCardReward()[opencard].item_seq = pItem->GetItemSeq();
//			pSpace->GetCardReward()[opencard].bag_type = clsData.bag_type;
//
//			NLogic::s_clsItemPool.DEL(pItem);
//		}
//
//		SendPacket(pUser, Reward, opencard);
//	}
//
//    static bool IsOpen(NLogic::Space * pSpace, int opencard, int gid)
//    {
//        bool ret = false;
//
//        if (opencard != 3)
//        {
//            for (int i = 0; i < 3; i++)
//            {
//                if (pSpace->GetCardReward()[i].gid == gid)
//                {
//                    ret = true;
//                    break;
//                }
//            }
//        }
//
//        return ret;
//    }
//
//    static void SendPacket(User * pUser, int res, int openCard)
//    {
//    	::Network::Packet * pNoti = ::Network::GETPACKETPOOL()->SEND_NEW();
//
//    	pNoti->MsgCat("%2d", res);
//    	pNoti->MsgCat("%4d", pUser->GetSpace()->GetCardReward()[openCard].gid);
//    	pNoti->MsgCat("%8d", pUser->GetSpace()->GetCardReward()[openCard].item_seq);
//    	pNoti->MsgCat("%c", pUser->GetSpace()->GetCardReward()[openCard].bag_type);
//    	pNoti->MsgCat("%4d", openCard);
//    	pNoti->MakePacket(CMD_SN_DUNGEON_CARD_REWARD);
//    	pUser->GetSpace()->SendAll(pNoti);
//    }
//};
//
//} /*NBattle*/ } /*NCommand*/ } /*ProjectZ*/
//
//
//#endif /* _PROJECTZ_NUSER_NCOMMAND_NBATTLE_CS_DUNGEON_CARD_REWARD_H_ */
